﻿Imports System.Web.Services
Imports MoniMisi2

Partial Class Employees
  Inherits System.Web.UI.Page


  Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    ' Si queremos dar valores por defecto a los controles del formulario, lo haremos de esta manera
    Me.Employees.Defectos.Add(New DefectoDatos("PhotoPath", "App_Themes\Tema\Caras\"))
    Me.Employees.Defectos.Add(New DefectoDatos("BirthDate", Date.Today.AddYears(-70)))
    Me.Employees.Defectos.Add(New DefectoDatos("ReportsTo", 2))
  End Sub
  
  <WebMethod()> _
 Public Shared Function ManejoEmployees(ByVal pContrato As MoniMisi2.ProveedorDatosServidor.Contrato) As MoniMisi2.ProveedorDatosServidor.Contrato
    Dim Contrato As MoniMisi2.ProveedorDatosServidor.Contrato = pContrato
    'En Contrato.Operacion encontraremos los datos que nos envia el cliente
    'En Contrato.Metodo encontraremos los datos que viajan al cliente.
    Dim Employees As New NorthWindTableAdapters.EmployeesTableAdapter
    If Contrato.Operacion.Nombre = "Leer" Then
      Contrato = ProveedorDatosServidor.LeerFilas(Contrato, Employees.Adaptador(pContrato.Orden))
    Else
      Dim Valores As Dictionary(Of String, Object)
      If pContrato.Operacion.Nombre = "Eliminar" Then
        Valores = Contrato.Operacion.Valor("RegistroAnterior")
      Else
        Valores = Contrato.Operacion.Valor("RegistroActual")
      End If
      ' Genero la tabla con los valores que vienen del cliente
      Dim Tabla As NorthWind.EmployeesDataTable = TablaEmpleado(Valores, Contrato.Operacion.Nombre)
      ' Actualizo la tabla Employees. Si es un registro nuevo se generará automaticamente un nuevo EmployeeID.
      ''Employees.Update(Tabla)
      If pContrato.Operacion.Nombre = "Agregar" Then
        'Envio el nuevo EmployeeID al cliente.
        ''Contrato.Metodo.Parametros("RegistroActual")("EmployeeID") = CType(Tabla.Rows(0), NorthWind.EmployeesRow).EmployeeID
      End If
    End If
    Return Contrato
  End Function


  Public Shared Function TablaEmpleado(ByVal pValores As Dictionary(Of String, Object), ByVal pOperacion As String) As NorthWind.EmployeesDataTable
    'Genero la tabla y un registro. Luego paso los valores que vienen del cliente al registro.
    Dim Tabla As New NorthWind.EmployeesDataTable
    Dim Fila As NorthWind.EmployeesRow = Tabla.NewEmployeesRow
    Fila.EmployeeID = pValores("EmployeeID")
    Fila.LastName = pValores("LastName")
    Fila.FirstName = pValores("FirstName")
    Fila.Title = pValores("Title")
    Fila.TitleOfCourtesy = pValores("TitleOfCourtesy")
    Fila.BirthDate = pValores("BirthDate")
    Fila.HireDate = pValores("HireDate")
    Fila.Address = pValores("Address")
    Fila.City = pValores("City")
    Fila._Region = pValores("Region")
    Fila.PostalCode = pValores("PostalCode")
    Fila.Country = pValores("Country")
    Fila.HomePhone = pValores("HomePhone")
    Fila.Extension = pValores("Extension")
    Fila.Notes = pValores("Notes")
    Fila.ReportsTo = pValores("ReportsTo")
    Fila.PhotoPath = pValores("PhotoPath")
    Fila.Salario = pValores("Salario")
    Tabla.Rows.Add(Fila)
    Tabla.AcceptChanges()
    'Marco el registro segun la operación que informa el cliente.
    'Esta marca la usa el método Update del TableAdapter para saber que comando ejecutar.
    Select Case pOperacion
      Case "Agregar"
        Fila.SetAdded()
      Case "Eliminar"
        Fila.Delete()
      Case "Modificar"
        Fila.SetModified()
    End Select
    Return Tabla
  End Function
End Class
